/**
 * 
 */
package de.cbf.cam.dsa.dataprovider.talents;

import java.util.ArrayList;
import java.util.List;

import de.cbf.cam.dsa.model.base.TalentTmpl;
import de.cbf.cam.dsa.model.entities.constants.TalentConstants;

/**
 * @author Nebelritter
 *
 */
public class TalentProviderWeapon {
	private static TalentProviderWeapon instance = new TalentProviderWeapon();

	private final int TYPE = TalentTmpl.TYPE_WeaponTalent;
	
	public static TalentProviderWeapon getInstance() {
		return instance;
	}
	
	public List <TalentTmpl> provideWeaponTalents(){
		List<TalentTmpl> resultList = new ArrayList<TalentTmpl>();
	
		resultList.add(provideAnderhalbhaender());
		resultList.add(provideArmbrust());
		resultList.add(provideBelagerungsWaffen());
		resultList.add(provideBlasrohr());
		resultList.add(provideBogen());
		resultList.add(provideDiskus());
		resultList.add(provideDolche());
		resultList.add(provideFechtwaffen());
		resultList.add(provideHiebwaffen());
		resultList.add(provideInfanteriewaffen());
		resultList.add(provideKettenstaebe());
		resultList.add(provideKettenwaffen());
		resultList.add(provideLanzenreiten());
		resultList.add(providePeitsche());
		resultList.add(provideRaufen());
		resultList.add(provideRingen());
		resultList.add(provideSaebel());
		resultList.add(provideSchleuder());
		resultList.add(provideSchwerter());
		resultList.add(provideSpeere());
		resultList.add(provideStaebe());
		resultList.add(provideWurfbeile());
		resultList.add(provideWurfmesser());
		resultList.add(provideWurfspeere());
		resultList.add(provideZweiHandFlegel());
		resultList.add(provideZweiHandHiebwaffen());
		resultList.add(provideZweiHandSchwerter());
		return resultList;
	}
	
	private TalentTmpl provideAnderhalbhaender() {
		TalentTmpl template = new TalentTmpl(TalentConstants.AnderhalbHaender, TYPE);
		template.addCompensateTalent(TalentConstants.Schwerter, -5);
		template.addCompensateTalent(TalentConstants.ZweiHandSchwerter, -5);
		template.setSktColumn('E');		
		template.setBeMod(-2);
		return template;
	}
	
	private TalentTmpl provideArmbrust() {
		TalentTmpl template = new TalentTmpl(TalentConstants.Armbrust, TYPE);
		template.addCompensateTalent(TalentConstants.Bogen, -5);		
		template.setSktColumn('C');	
		template.setBeMod(-5);
		return template;
	}
	
	private TalentTmpl provideBelagerungsWaffen() {
		TalentTmpl template = new TalentTmpl(TalentConstants.Belagerungswaffen, TYPE);		
		template.setSktColumn('D');
		template.setBeMod(0);
		return template;
	}
	
	private TalentTmpl provideBlasrohr() {
		TalentTmpl template = new TalentTmpl(TalentConstants.Blasrohr, TYPE);		
		template.setSktColumn('D');
		template.setBeMod(-5);
		return template;
	}
	
	private TalentTmpl provideBogen() {
		TalentTmpl template = new TalentTmpl(TalentConstants.Bogen, TYPE);		
		template.setSktColumn('E');
		template.setBeMod(-3);
		return template;
	}
	
	private TalentTmpl provideDiskus() {
		TalentTmpl template = new TalentTmpl(TalentConstants.Diskus, TYPE);		
		template.setSktColumn('D');
		template.setBeMod(-2);
		return template;
	}
	private TalentTmpl provideDolche(){
		TalentTmpl template = new TalentTmpl(TalentConstants.Dolche, TYPE);		
		template.addCompensateTalent(TalentConstants.Fechtwaffen,-5);
		template.addCompensateTalent(TalentConstants.Raufen,-5);
		template.setSktColumn('D');
		template.setBeMod(-1);
		return template;
	}
	private TalentTmpl provideFechtwaffen(){
		TalentTmpl template = new TalentTmpl(TalentConstants.Fechtwaffen, TYPE);		
		template.addCompensateTalent(TalentConstants.Dolche,-5);
		template.addCompensateTalent(TalentConstants.Schwerter,-5);
		template.setSktColumn('E');
		template.setBeMod(-1);
		return template;
	}
	private TalentTmpl provideHiebwaffen(){
		TalentTmpl template = new TalentTmpl(TalentConstants.Hiebwaffen, TYPE);		
		template.addCompensateTalent(TalentConstants.Saebel,-5);
		template.setSktColumn('D');
		template.setBeMod(-4);
		return template;
	}
	private TalentTmpl provideInfanteriewaffen(){
		TalentTmpl template = new TalentTmpl(TalentConstants.Infanteriewaffen, TYPE);		
		template.addCompensateTalent(TalentConstants.Speere,-5);		
		template.addCompensateTalent(TalentConstants.ZweiHandHiebwaffen,-5);
		template.setSktColumn('D');
		template.setBeMod(-3);
		return template;
	}
	private TalentTmpl provideKettenstaebe() {
		TalentTmpl template = new TalentTmpl(TalentConstants.Kettenstaebe, TYPE);
		template.addCompensateTalent(TalentConstants.Kettenwaffen, -5);
		template.addCompensateTalent(TalentConstants.ZweiHandFlegel, -5);
		template.setSktColumn('E');		
		template.setBeMod(-1);
		return template;
	}

	private TalentTmpl provideKettenwaffen(){
		TalentTmpl template = new TalentTmpl(TalentConstants.Kettenwaffen, TYPE);
		template.addCompensateTalent(TalentConstants.Kettenstaebe, -5);
		template.addCompensateTalent(TalentConstants.ZweiHandFlegel, -5);
		template.setSktColumn('D');	
		template.setBeMod(-3);
		return template;
	}
	private TalentTmpl provideLanzenreiten(){
		TalentTmpl template = new TalentTmpl(TalentConstants.Lanzenreiten, TYPE);
		template.setSktColumn('E');
		template.setBeMod(0);
		return template;
	}
	private TalentTmpl providePeitsche(){
		TalentTmpl template = new TalentTmpl(TalentConstants.Peitsche, TYPE);
		template.setSktColumn('E');
		template.setBeMod(-1);
		return template;
	}
	private TalentTmpl provideRaufen(){
		TalentTmpl template = new TalentTmpl(TalentConstants.Raufen, TYPE);
		template.setSktColumn('C');		
		return template;
	}
	private TalentTmpl provideRingen(){
		TalentTmpl template = new TalentTmpl(TalentConstants.Ringen, TYPE);
		template.setSktColumn('D');		
		return template;
	}
	private TalentTmpl provideSaebel(){
		TalentTmpl template = new TalentTmpl(TalentConstants.Saebel, TYPE);
		template.setSktColumn('D');		
		template.setBeMod(-2);
		return template;
	}
	private TalentTmpl provideSchleuder(){
		TalentTmpl template = new TalentTmpl(TalentConstants.Schleuder, TYPE);
		template.setSktColumn('E');	
		template.setBeMod(-2);
		return template;
	}
	private TalentTmpl provideSchwerter(){
		TalentTmpl template = new TalentTmpl(TalentConstants.Schwerter, TYPE);
		template.addCompensateTalent(TalentConstants.AnderhalbHaender, -5);
		template.addCompensateTalent(TalentConstants.Fechtwaffen, -5);
		template.addCompensateTalent(TalentConstants.Saebel, -5);
		template.setSktColumn('E');		
		template.setBeMod(-2);
		return template;
	}
	private TalentTmpl provideSpeere(){
		TalentTmpl template = new TalentTmpl(TalentConstants.Speere, TYPE);
		template.addCompensateTalent(TalentConstants.Infanteriewaffen, -5);		
		template.setSktColumn('D');	
		template.setBeMod(-3);
		return template;
	}
	private TalentTmpl provideStaebe(){
		TalentTmpl template = new TalentTmpl(TalentConstants.Staebe, TYPE);
		template.addCompensateTalent(TalentConstants.Speere, -5);		
		template.setSktColumn('D');	
		template.setBeMod(-2);
		return template;
	}
	private TalentTmpl provideWurfbeile(){
		TalentTmpl template = new TalentTmpl(TalentConstants.Wurfbeile, TYPE);
		template.addCompensateTalent(TalentConstants.Wurfspeere, -5);		
		template.addCompensateTalent(TalentConstants.Wurfmesser, -5);
		template.setSktColumn('D');	
		template.setBeMod(-2);
		return template;
	}
	private TalentTmpl provideWurfmesser(){
		TalentTmpl template = new TalentTmpl(TalentConstants.Wurfmesser, TYPE);
		template.addCompensateTalent(TalentConstants.Wurfbeile, -5);		
		template.addCompensateTalent(TalentConstants.Wurfmesser, -5);
		template.setSktColumn('C');	
		template.setBeMod(-3);
		return template;
	}
	private TalentTmpl provideWurfspeere(){
		TalentTmpl template = new TalentTmpl(TalentConstants.Wurfspeere, TYPE);
		template.addCompensateTalent(TalentConstants.Wurfbeile, -5);		
		template.setSktColumn('C');
		template.setBeMod(-2);
		return template;
	}
	private TalentTmpl provideZweiHandFlegel(){
		TalentTmpl template = new TalentTmpl(TalentConstants.ZweiHandFlegel, TYPE);
		template.addCompensateTalent(TalentConstants.Infanteriewaffen, -5);
		template.addCompensateTalent(TalentConstants.Kettenwaffen, -5);
		template.setSktColumn('D');
		template.setBeMod(-3);
		return template;
	}
	private TalentTmpl provideZweiHandHiebwaffen(){
		TalentTmpl template = new TalentTmpl(TalentConstants.ZweiHandHiebwaffen, TYPE);
		template.addCompensateTalent(TalentConstants.Hiebwaffen, -5);
		template.addCompensateTalent(TalentConstants.Infanteriewaffen, -5);
		template.setSktColumn('D');
		template.setBeMod(-3);
		return template;
	}	
	private TalentTmpl provideZweiHandSchwerter(){
		TalentTmpl template = new TalentTmpl(TalentConstants.ZweiHandSchwerter, TYPE);
		template.addCompensateTalent(TalentConstants.AnderhalbHaender, -5);
		template.addCompensateTalent(TalentConstants.Schwerter, -5);
		template.addCompensateTalent(TalentConstants.Saebel, -5);
		template.setSktColumn('E');
		template.setBeMod(-2);
		return template;
	}	
	
}
